SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO









CREATE PROC [dbo].[SP_TXMVTO_CNTB_I19]
/*-------------------------------------------------------------------*/
/*----- Empresa           : OFISIS S.A.                          ----*/
/*----- Cliente           : OFISIS S.A.                          ----*/
/*----- Sistema           : Contabilidad                         ----*/
/*----- Modulo            : Empresa                              ----*/
/*----- Programa          : Asientos de gestion                  ----*/
/*----- Nombre            : SP_TXMVTO_CNTB_I19                   ----*/
/*----- Script            : SP_TXMVTO_CNTB_I19                   ----*/
/*----- Desarrollado por  : Luz Gonzalez                         ----*/
/*----- Fecha             : 01/03/2002                           ----*/
/*----- Base de Datos     : MS SQL Server                        ----*/
/*----- Version BD        : 6.5                                  ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Modificado 1 por  : Percy Garc?a                         ----*/
/*----- Fecha Modifica    : 13/04/2002                           ----*/
/*----- Detalle Modifica  : No graba documento y graba auxiliar origen------*/
/*-----                     estandarizaciones nueva BD           ----*/
/*-------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/*----- Drop proc SP_TXMVTO_CNTB_I19                             ----*/
/*----- Grant all on SP_TXMVTO_CNTB_I19 to PUBLIC                ----*/
/*----- EXEC SP_TXMVTO_CNTB_I19 '01', 1, '001',2002,3            ----*/
/*-------------------------------------------------------------------*/
@ISCO_EMPR	  TD_VC_002,
@INNU_CNTB_EMPR	  TD_IN_001_CONT, 
@INNU_ANNO	  TD_IN_004_ANNO,
@INNU_MESE	  TD_IN_002_MESE

as
Begin Transaction SP_TXMVTO_CNTB_I19
Declare 
@CSCO_CNTA_CONT		TD_VC_020_CNTA,
@CSCO_CNTA_DEST		TD_VC_020_CNTA,
@CSTI_AUXI_EMPR         TD_VC_001, 
@CSCO_AUXI_EMPR         TD_VC_020,
@CSCO_CNTA_EMPR	 	TD_VC_020_CNTA,
@CSCO_ORDE_SERV	        TD_VC_020,
@VNNU_SECU		TD_IN_002,
@CDFE_ASTO_CNTB  	TD_DT_001,
@CSCO_MONE 		TD_VC_003,
@CSTI_CAMB		TD_VC_003,
@CNFA_CAMB 		TD_NU_015_006,
@CNIM_MVTO_ORIG		TD_NU_016_004,
@CNIM_MVTO_CNTB		TD_NU_016_004,
@VSTI_OPER		TD_VC_003,
@CSTI_OPER_CNTB		TD_VC_003,
@CSDE_GLOS		TD_VC_100,
@CSCO_OPRC_ORIG     	TD_VC_003,
@CSCO_UNID_ORIG     	TD_VC_003,
@CSNS_ASTO_ORIG	        TD_VC_010,
@CDFE_DOCU_VENC		TD_DT_001, 
@CNFA_CAMB_DIAR		TD_NU_015_006, 
@CDFE_DOCU_REFE		TD_DT_001, 
@VSCO_OPRC_GEST     	TD_VC_003,
@CNNU_PROC		TD_IN_001, 
@CNNU_PROC_SECU		TD_IN_001,
@VSCO_CNTA_DOCU		TD_VC_010,
@VSTI_AUXI_EMPR  	TD_VC_001,
@VSCO_AUXI_EMPR  	TD_VC_020,
@VSTI_DOCU       	TD_VC_003,
@VSNU_DOCU       	TD_VC_020,
@VDFE_DOCU		TD_DT_001, 

@VSTI_AUXI_0001  	TD_VC_001,
@VSCO_AUXI_0001  	TD_VC_020,
@VSTI_DOCU_0001       	TD_VC_003,
@VSNU_DOCU_0001      	TD_VC_020,
@VDFE_DOCU_0001		TD_DT_001, 

@CSST_AUXI_EMPR      	TD_VC_001,
@VSST_AUXI_DEST      	TD_VC_001,
@VSST_AUXI_CONT      	TD_VC_001,
@VSST_DOCU_DEST      	TD_VC_001,
@VSST_DOCU_CONT      	TD_VC_001,
@VNFA_CMPR_OFIC         TD_NU_015_006,
@VNFA_VNTA_OFIC         TD_NU_015_006, 
@VNFA_CAMB_DIAR         TD_NU_015_006,
@VSST_CNTA_NATU         TD_VC_003,
@VSCO_MONE		TD_VC_003

Delete From TXMVTO_CNTB 
Where CO_EMPR      = @ISCO_EMPR And
	NU_CNTB_EMPR = @INNU_CNTB_EMPR And
	NU_ANNO      = @INNU_ANNO And
	NU_MESE      = @INNU_MESE And
        ST_GEST      = 'S'   
     

If @@ERROR <> 0     /*si falla  el Delete*/
Begin 
 Rollback Tran SP_TXMVTO_CNTB_I19
 Return
End

SELECT @VSCO_OPRC_GEST = CO_OPRC_CNTB 
FROM TTIDEN_OPER
WHERE
 CO_EMPR = @ISCO_EMPR And 
 ID_OPRC = '011' And
 NU_CNTB_EMPR = @INNU_CNTB_EMPR


Select @VSCO_MONE = CO_MONE 
From TTCNTB_EMPR
Where CO_EMPR = @ISCO_EMPR 
And NU_CNTB_EMPR = @INNU_CNTB_EMPR  Declare CU_TXMVTO_CNTB_I19_1 Cursor For
Select 
T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR,
T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, T1.TI_OPER,
T1.IM_MVTO_ORIG, T1.IM_MVTO_CNTB, T1.DE_GLOS, 
T2.CO_CNTA_CONT, T2.CO_CNTA_DEST, T3.ST_AUXI_EMPR,
T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU
From TXMVTO_CNTB T1, TRAUXI_GEST T2, TMPLAN_EMPR T3
Where  	T1.CO_EMPR      = @ISCO_EMPR
And	T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
And	T1.NU_ANNO      = @INNU_ANNO
And	T1.NU_MESE      = @INNU_MESE
And 	T1.SI_MVTO_CNTB = 'APR'
And	T1.CO_OPRC_CNTB != @VSCO_OPRC_GEST
And	T2.CO_CNTA_DEST IS NOT NULL 
And	T2.CO_CNTA_CONT IS NOT NULL 
And	T2.CO_EMPR      = T1.CO_EMPR
And     T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR
And	T2.TI_AUXI_EMPR = T1.TI_AUXI_EMPR
And	T2.CO_AUXI_EMPR = T1.CO_AUXI_EMPR
And     T2.CO_CNTA_DEST In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
                            And NU_ANNO	= 9999 And TI_SITU = 'ACT' )
And     T2.CO_CNTA_CONT In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
                            And NU_ANNO	= 9999 And TI_SITU = 'ACT' )
And	T3.CO_EMPR      = T2.CO_EMPR
And	T3.NU_ANNO	= 9999
And     T3.CO_CNTA_EMPR = T2.CO_CNTA_EMPR
And     T3.TI_SITU ='ACT'
Union
Select 
T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.FE_ASTO_CNTB, T1.CO_CNTA_EMPR,
T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR, T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, T1.TI_OPER,
T1.IM_MVTO_ORIG, T1.IM_MVTO_CNTB, T1.DE_GLOS, T2.CO_CNTA_CONT, T2.CO_CNTA_DEST, T2.ST_AUXI_EMPR,
T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, T1.NU_PROC, T1.NU_PROC_SECU
From TXMVTO_CNTB T1, TMPLAN_EMPR T2
Where  	T1.CO_EMPR      = @ISCO_EMPR
And	T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
And	T1.NU_ANNO      = @INNU_ANNO
And	T1.NU_MESE      = @INNU_MESE
And 	T1.SI_MVTO_CNTB = 'APR'
And	T1.CO_OPRC_CNTB != @VSCO_OPRC_GEST
And	T2.CO_EMPR      = T1.CO_EMPR
And	T2.NU_ANNO	= 9999 
And     T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR
And	T2.CO_CNTA_DEST IS NOT NULL 
And     T2.CO_CNTA_EMPR Not In (Select Distinct CO_CNTA_EMPR From TRAUXI_GEST Where CO_EMPR = @ISCO_EMPR ) 
And     T2.CO_CNTA_DEST In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
                            And NU_ANNO	= 9999 And TI_SITU = 'ACT' )
And     T2.CO_CNTA_CONT In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
                            And NU_ANNO	= 9999 And TI_SITU = 'ACT' )
And     T2.TI_SITU ='ACT'
Order By 5
/*
Select  T1.CO_UNID_CNTB, T1.CO_OPRC_CNTB, T1.NU_ASTO, T1.FE_ASTO_CNTB, T2.CO_CNTA_CONT, T2.CO_CNTA_DEST,
        T1.TI_AUXI_EMPR, T1.CO_AUXI_EMPR,
        T1.CO_CNTA_EMPR, T1.CO_MONE, T1.TI_CAMB, T1.FA_CAMB, 
        T1.TI_OPER, T1.IM_MVTO_ORIG,  T1.IM_MVTO_CNTB, 
        T1.DE_GLOS, T1.FE_DOCU_VENC, T1.FA_CAMB_DIAR, T1.FE_DOCU_REFE, 
        T1.NU_PROC, T1.NU_PROC_SECU
From    TXMVTO_CNTB T1, TMPLAN_EMPR T2, TMOPRC_CNTB T3
Where   T1.CO_EMPR = @ISCO_EMPR And
        T1.CO_EMPR = T2.CO_EMPR And 
        T1.CO_CNTA_EMPR = T2.CO_CNTA_EMPR And 
        T1.CO_EMPR = T3.CO_EMPR And 
        T1.CO_OPRC_CNTB = T3.CO_OPRC_CNTB And 
        T1.CO_OPRC_CNTB != @VSCO_OPRC_GEST AND
        T3.TI_SITU = 'ACT' And
	T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR And
	T1.NU_ANNO = @INNU_ANNO And
	T1.NU_MESE = @INNU_MESE And

	T2.CO_EMPR = T1.CO_EMPR And

	T2.CO_CNTA_DEST IS NOT NULL And
        T2.CO_CNTA_DEST In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
        And TI_SITU = 'ACT' And NU_ANNO =@INNU_ANNO) And 
        T2.CO_CNTA_CONT In (Select CO_CNTA_EMPR From TMPLAN_EMPR Where CO_EMPR = @ISCO_EMPR
        And TI_SITU = 'ACT'And NU_ANNO =@INNU_ANNO) And 
	T1.SI_MVTO_CNTB = 'APR'
        and   T2.NU_ANNO= @INNU_ANNO
        and  T2.TI_SITU ='ACT'
*/

Open CU_TXMVTO_CNTB_I19_1
Fetch CU_TXMVTO_CNTB_I19_1 into
	@CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,
	@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
	@CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
	@CSDE_GLOS, @CSCO_CNTA_CONT, @CSCO_CNTA_DEST, @CSST_AUXI_EMPR,
	@CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU

While @@Fetch_Status = 0
  Begin

  Select @VNNU_SECU = 0

  Select @VNNU_SECU  = MAX(NU_SECU) + 1
  From	TXMVTO_CNTB 
  Where	
  CO_EMPR 	= @ISCO_EMPR 	  And
  NU_CNTB_EMPR 	= @INNU_CNTB_EMPR And
  CO_UNID_CNTB 	= @CSCO_UNID_ORIG And
  CO_OPRC_CNTB 	= @CSCO_OPRC_ORIG And
  NU_ANNO 	= @INNU_ANNO 	  And
  NU_MESE 	= @INNU_MESE 	  And
  NU_ASTO 	= @CSNS_ASTO_ORIG  


  Select @VSST_AUXI_DEST = ST_AUXI_EMPR
  From   TMPLAN_EMPR
  Where  CO_EMPR = @ISCO_EMPR
  And    CO_CNTA_EMPR = @CSCO_CNTA_DEST
  And NU_ANNO	= 9999 
-- AND NU_ANNO = @INNU_ANNO

  Select @VSST_AUXI_CONT = ST_AUXI_EMPR
  From   TMPLAN_EMPR
  Where  CO_EMPR = @ISCO_EMPR
  And    CO_CNTA_EMPR = @CSCO_CNTA_CONT
  And NU_ANNO	= 9999 
--  AND NU_ANNO = @INNU_ANNO

   If @CSTI_OPER_CNTB = 'ABO'
      Select @VSTI_OPER = 'CAR'
   Else
      Select @VSTI_OPER = 'ABO'

   /*--- Para el Factor de Cambio Diario ---*/
   select @VSST_CNTA_NATU = ST_CNTA_CAMB
     from TMPLAN_EMPR
     where CO_EMPR = @ISCO_EMPR
     and CO_CNTA_EMPR = @CSCO_CNTA_EMPR
     And NU_ANNO	= 9999 
--      AND NU_ANNO = @INNU_ANNO  

   Select @VNFA_CMPR_OFIC = FA_CMPR_OFIC, 
          @VNFA_VNTA_OFIC = FA_VNTA_OFIC
    from TCFACT_CAMB
    where CO_MONE != @VSCO_MONE
    and FE_CAMB = @CDFE_ASTO_CNTB

   If @VSST_CNTA_NATU = 'COM' /*-- Compra --*/
     Select @VNFA_CAMB_DIAR = @VNFA_CMPR_OFIC
   If @VSST_CNTA_NATU = 'VEN' /*-- Venta --*/
     Select @VNFA_CAMB_DIAR = @VNFA_VNTA_OFIC

   If @VNFA_CAMB_DIAR IS NULL or @VNFA_CAMB_DIAR = 0

     Select @VNFA_CAMB_DIAR = 1.00


If RTRIM(@CSCO_CNTA_CONT) IS NOT Null And RTRIM(@CSCO_CNTA_DEST) IS NOT Null
 Begin
  If @VSST_AUXI_DEST = 'N' 
    Begin
        Select @CSTI_AUXI_EMPR = NULL
        Select @CSCO_AUXI_EMPR = NULL 
    End

    Insert Into TXMVTO_CNTB
	( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,
	NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,
	TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,
	IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, 
	SI_MVTO_CNTB, CO_UNID_ORIG, CO_OPRC_ORIG, 
	NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, FE_DOCU_REFE,
        NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG)
     Values
	( @ISCO_EMPR, @INNU_CNTB_EMPR, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG,
	@INNU_ANNO, @INNU_MESE, @CSNS_ASTO_ORIG, @VNNU_SECU, @CDFE_ASTO_CNTB,
	@CSCO_CNTA_DEST, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, NULL, NULL,
        NULL, @CSTI_CAMB, @CSCO_MONE, @CNFA_CAMB, @CSTI_OPER_CNTB,          
        @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, 'APR',  @CSCO_UNID_ORIG, 
        @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, 
        @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU, NULL, 'S', 'N', @CSCO_CNTA_EMPR)

 If @@error <> 0        /*si falla  el insert*/
   Begin 
	Close CU_TXMVTO_CNTB_I19_1
	Deallocate CU_TXMVTO_CNTB_I19_1
	Rollback tran SP_TXMVTO_CNTB_I19
        Return
    End 
/*Incrementa el contador de registros */
    Select @VNNU_SECU = @VNNU_SECU + 1

  If @VSST_AUXI_CONT = 'N' 
    Begin
        Select @CSTI_AUXI_EMPR = NULL
        Select @CSCO_AUXI_EMPR = NULL
    End

    Insert Into TXMVTO_CNTB
	( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,
	NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,
	TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,
	IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, 
        CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, FE_DOCU_VENC, FA_CAMB_DIAR, 
        FE_DOCU_REFE, NU_PROC, NU_PROC_SECU, CO_ORDE_SERV, ST_GEST, ST_REDO, CO_CNTA_ORIG)
     Values
	( @ISCO_EMPR, @INNU_CNTB_EMPR, @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @INNU_ANNO, @INNU_MESE, 
        @CSNS_ASTO_ORIG, @VNNU_SECU, @CDFE_ASTO_CNTB, @CSCO_CNTA_CONT, @CSTI_AUXI_EMPR, 
        @CSCO_AUXI_EMPR, NULL, NULL, 
        NULL, @CSTI_CAMB, @CSCO_MONE, @CNFA_CAMB, @VSTI_OPER, 
        @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, 'APR', 
        @CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_DOCU_VENC, @VNFA_CAMB_DIAR, 
        @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU, NULL, 'S', 'N', @CSCO_CNTA_EMPR)
	If @@error <> 0          /*si falla  el insert*/
	   Begin 
		Close CU_TXMVTO_CNTB_I19_1
		Deallocate CU_TXMVTO_CNTB_I19_1
		Rollback tran SP_TXMVTO_CNTB_I19
		Return
   	   End
    Select @VNNU_SECU = @VNNU_SECU + 1
  End
Fetch CU_TXMVTO_CNTB_I19_1 into
	@CSCO_UNID_ORIG, @CSCO_OPRC_ORIG, @CSNS_ASTO_ORIG, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR,
	@CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
	@CSCO_MONE, @CSTI_CAMB, @CNFA_CAMB, @CSTI_OPER_CNTB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, 
	@CSDE_GLOS, @CSCO_CNTA_CONT, @CSCO_CNTA_DEST, @CSST_AUXI_EMPR,
	@CDFE_DOCU_VENC, @CNFA_CAMB_DIAR, @CDFE_DOCU_REFE, @CNNU_PROC, @CNNU_PROC_SECU
End

Close CU_TXMVTO_CNTB_I19_1
Deallocate CU_TXMVTO_CNTB_I19_1
Commit transaction SP_TXMVTO_CNTB_I19
Return                

/*--------------------------------- Fin -------------------------------*/





GO
